草庐IT

python - 命名元组的名称和引用可以不同吗?

全部标签

ruby - 使用字符串按名称访问局部变量

我是新手,但我有以下代码:when/^read(.+)$/puts"Reading#{$1}:"puts$1.description.downcase我想使用$1作为我可以调用方法的变量,目前解释器返回一个"NoMethodError:undefinedmethod'description'for"Door":String"。编辑:例如:door=Item.new(:name=>"Door",:description=>"alockeddoor")key=Item.new(:name=>"Key",:description=>"akey") 最佳答案

ruby - 是否可以在 Sinatra 中重写基本 URL?

是否可以重写基本URL?例如而不是www.host.com/使用www.host.com/blah/作为一个基本的url等等:get'/'do...end适用于www.host.com/blah/我可以附加到我的所有路线'/blah/..'但任何gem等。也将无法工作。这可以在Rails中轻松完成,我也想在Sinatra中使用它。 最佳答案 我为此使用了Rack中间件rack-rewrite我对此很满意:)useRack::Rewritedorewrite%r{^/\w{2}/utils},'/utils'rewrite%r{^/\

ruby - 为什么我可以在 Ruby 中将一个 undefined variable 赋值给它自己并得到 nil?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whya=aisnilinRuby?我们应该说,在Ruby中使用undefinedvariable是“奇怪的现象”。是这样的:#irbsessionfollows#foo#undefinedlocalvariableormethod'foo'bar#samefor'bar'foo=bar#stillsamefor'bar'foo=foo#nil-HUH?foo#isnowsettonil!?为什么我可以在Ruby中将一个undefinedvariable赋值给自身并得到nil?请注意,我在这里使用的是Ruby

Ruby 命名约定/双下划线/有用的东西

我知道有__FILE__、__LINE__和__send__。Delegator类中有__getobj__和__setobj__。Ruby标准库中是否还有其他有用的“奇怪”双下划线优点? 最佳答案 这是Ruby2.1的完整列表:__callee__(内核)__dir__(内核)__method__(内核)__id__(基本对象)__send__(基本对象)__ENCODING__(关键词)__LINE__(关键词)__FILE__(关键词)来自delegate:__getobj__(委托(delegate)人)__setobj__(

ruby-on-rails - routes.rb - 不支持 Controller 名称

我遇到了一个很奇怪的问题。这是与routes.rb相关的部分:resources:playersmatch'/players/:userid',:to=>'Players#show'当您访问localhost:3000/players/1234时出现此错误:'Players'isnotasupportedcontrollername.Thiscanleadtopotentialroutingproblems.Controller中的相关代码:defshowbeginifPlayer.find_by(:uid=>:userid)then@playerattributes=Player.f

ruby - 我可以在 Opal 中使用 Ruby gems 吗?

有opal-irb和opal-jquery和vienna但有没有办法通过Opal直接在浏览器中使用gems? 最佳答案 您可以使用Opal.use_gem将gem的lib路径添加到Opal加载路径常见的陷阱是:使用字符串可变性依靠String和Symbol的区别脱壳(``和%x{})修复/解决其中一些问题的可用工具是:stub文件Opal::Processor.stub_file('fileutils')使用RUBY_ENGINE在编译时隐藏代码分支,例子:除非RUBY_ENGINE=='蛋白石'此处无法解析/破坏代码结尾您可以查看

ruby-on-rails - 何时使用关联扩展与命名范围?

粗略地看一下,它们似乎只是解决同一组问题的两种不同方法,除了命名作用域是可链接的,而关联扩展不是。谁能进一步解释或提供一个比命名范围更适合关联扩展的示例? 最佳答案 关联扩展对于创建用于创建、更新等(不一定是查找)的自定义方法非常有用。因为您可以访问proxy_owner、proxy_reflection、proxy_target,所以您可以很好地了解这种关系。查看Rails文档的关联扩展部分:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMeth

Ruby:是否有关键字可以从自身内部调用方法(类似于 super)?

我想知道:在Ruby中,有没有一种方法可以在不使用其名称的情况下从自身内部调用方法?如果该方法是通过某些元编程技术创建的,那么通过其名称调用它可能会难以阅读。即使对于通常定义的方法,如果您不确定它的好名字,或者如果它的名字很长,通过一些关键字(类似于super)从自身内部调用它可能会很方便。 最佳答案 您可以使用Kernel#__method__以Symbol形式返回当前方法的名称。与super不同,它不是关键字而是常规方法,因此您必须将它连同必需的参数一起传递给send方法才能调用该方法。这是__method__返回的内容:obj

ruby - 为什么在 ruby​​ 1.9 中可以用 === 调用 procs?

Thisarticle提到了ruby1.9中调用procs的4种方式,===就是其中之一。我完全不明白为什么要这样做。它和===(询问两个对象是否是同一个对象)的正常含义有什么关系吗?irb(main):010:0>f=->n{[:hello,n]}=>#irb(main):011:0>f.call(:hello)=>[:hello,:hello]irb(main):012:0>f===:hello=>[:hello,:hello]irb(main):013:0>Object.new===Object.new=>falseirb(main):014:0>f===f=>[:hello,#

ruby - rvm 中每个 ruby​​ 版本的不同 ruby​​gem 版本

我通过rvm安装了ruby​​1.8.7和1.9.3。对于每个ruby​​版本,我想:将gem1.3.7用于ruby​​1.8.7将gem1.8.x用于ruby​​1.9.3如何在rvm中设置以上内容? 最佳答案 $rvmuse1.8.7$rvmrubygems1.3.7$rvmuse1.9.3$rvmrubygemslatest-1.8$gem-v1.8.24$rvmuse1.8.7$gem-v1.3.7 关于ruby-rvm中每个ruby​​版本的不同ruby​​gem版本,我们在S